#include<stdio.h>

typedef struct _nodo{
	int dato; /* dato del nodo (un entero) */
	struct _nodo* prox; /* puntero al siguiente */
} nodo;
typedef struct _lista{
	nodo* primero; /* puntero al primer nodo */
} lista;

extern int iesimo(lista l, unsigned int i);
extern unsigned int buscar(lista l, int n);
extern void agregarAd(lista* l, int n);
extern void agregarAt(lista* l, int n);
extern void eliminar(lista* l, int n);
extern void eliminarApariciones(lista* l, int dato);
extern void eliminarRepetidos(lista* l);

int main(){
	lista l;
	//nodo n1; n1.dato=1;
	//nodo n2; n2.dato=2;
	//nodo n3; n3.dato=3;
	l.primero=NULL;
	agregarAt(&l,1);
	agregarAt(&l,2);
	agregarAt(&l,3);
	//n1.prox=&n2;
	//n2.prox=&n3;
	//n3.prox=NULL;
	
	printf("iesimo: ");
	printf("%d\n",iesimo(l,2));
	
	printf("buscar: ");
	printf("%u\n",buscar(l,3));
	
	printf("agregarAd: ");
	agregarAd(&l,10);
	int i;for(i=1;i<=4;i++) printf("%d,",iesimo(l,i)); printf("\n");
	
	printf("agregarAt: ");
	agregarAt(&l,10);
	agregarAt(&l,1);
	agregarAt(&l,3);
	for(i=1;i<=7;i++) printf("%d,",iesimo(l,i)); printf("\n");
	
	printf("eliminar: ");
	eliminar(&l,2);
	for(i=1;i<=6;i++) printf("%d,",iesimo(l,i)); printf("\n");
	
	printf("eliminarApariciones: ");
	eliminarApariciones(&l,10);
	for(i=1;i<=4;i++) printf("%d,",iesimo(l,i)); printf("\n");
	
	printf("eliminarRepetidos: ");
	eliminarRepetidos(&l);
	for(i=1;i<=2;i++) printf("%d,",iesimo(l,i)); printf("\n");
	
	return 0;
}
